# -*- coding: utf-8 -*-
# @Time    : 2021/12/17 10:17 上午
# @Author  : zlt
# @FileName: util_excel.py
# @Software: PyCharm

"""
文件说明：
读取Excel中的用例数据
并根据"case_name"字段来查找对应的用例
"""

import xlrd

def excel_to_list(data_file, sheet):
    """
    读取Excel中特定sheet的数据，按行将数据存入数组datalist
    :param data_file:Excel文件目录
    :param sheet:需要读取的sheet名称
    :return:datalist
    """
    # 新建个空列表，来存储所有的数据
    data_list = []
    # 打开excel
    wb = xlrd.open_workbook(data_file)
    # 获取工作簿
    sh = wb.sheet_by_name(sheet)
    # 获取标题行数据
    header = sh.row_values(0)
    # 跳过标题行，从第二行开始取数据
    for i in range(1, sh.nrows):
        # 将标题和每行数据组装成字典
        d = dict(zip(header, sh.row_values(i)))
        # 列表嵌套字典格式，每个元素是一个字典
        data_list.append(d)
    return data_list


def get_test_data(data_list, case_name):
    """
    根据用例名称查找用例本身
    :param data_list:按行存储用例的数组
    :param case_name: 用例名称
    :return: case_data
    """
    for case_data in data_list:
        # 如果字典数据中case_name与参数一致
        if case_name == case_data['case_name']:
            return case_data
        # 如果查询不到会返回None
        else:
            return None
